package demo2;

/**
 * Created with IntelliJ IDEA.
 * Description:如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后，短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
 * 字母和数字都属于字母数字字符。
 * 给你一个字符串 s，如果它是 回文串 ，返回 true ；否则，返回 false 。
 * User: 86183
 */
public class Test3 {
    //判断字符是否为字母数字字符
    public static boolean isValidChar(char ch){
        if((ch >='a'&& ch <= 'z') ||(ch >= '0'&& ch <='9')){
            return true;
        }
        return false;
    }
    public static boolean isPalindrome(String s){
        //将字符串转换成小写字符串
        String str = s.toLowerCase();
        //将字符串转换成数组
        char[] ch = str.toCharArray();
        //定义left和right
        int left = 0;
        int right = str.length()-1;
        //判断是否为回文串
        while (left <right){
            while (left <right && !isValidChar(ch[left])){
                left++;
            }
            while ((left <right && !isValidChar(ch[right]))){
                right--;
            }
            if(ch[left] != ch[right]){
                return false;
            }else {
                left++;
                right--;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        String  s = "A man, a plan, a canal: Panama";
        System.out.println(isPalindrome(s));
    }
}
